--=============== МОДУЛЬ 2. РАБОТА С БАЗАМИ ДАННЫХ =======================================
--= ПОМНИТЕ, ЧТО НЕОБХОДИМО УСТАНОВИТЬ ВЕРНОЕ СОЕДИНЕНИЕ И ВЫБРАТЬ СХЕМУ PUBLIC===========
SET search_path TO public;

--======== ОСНОВНАЯ ЧАСТЬ ==============--
/* Михайлов Дмитрий Александрович */

--ЗАДАНИЕ №1
--Выведите уникальные названия городов из таблицы городов.

SELECT DISTINCT city FROM city;



--ЗАДАНИЕ №2
--Доработайте запрос из предыдущего задания, чтобы запрос выводил только те города,
--названия которых начинаются на “L” и заканчиваются на “a”, и названия не содержат пробелов.

SELECT DISTINCT city FROM city
WHERE city LIKE 'L%a' and not  city LIKE '% %';



--ЗАДАНИЕ №3
--Получите из таблицы платежей за прокат фильмов информацию по платежам, которые выполнялись 
--в промежуток с 17 июня 2005 года по 19 июня 2005 года включительно, 
--и стоимость которых превышает 1.00.
--Платежи нужно отсортировать по дате платежа.

SELECT payment_id, payment_date, amount FROM payment
WHERE payment_date BETWEEN '17-06-2005' AND '19-06-2005' and amount > 1
order by payment_date;


--ЗАДАНИЕ №4
-- Выведите информацию о 10-ти последних платежах за прокат фильмов.

SELECT payment_date, payment_id, amount from payment
ORDER BY payment_date DESC LIMIT 10;


--ЗАДАНИЕ №5
--Выведите следующую информацию по покупателям:
--  1. Фамилия и имя (в одной колонке через пробел)
--  2. Электронная почта
--  3. Длину значения поля email
--  4. Дату последнего обновления записи о покупателе (без времени)
--Каждой колонке задайте наименование на русском языке.

SELECT first_name  || ' ' || last_name as "ФИО", email as "Почта", 
CHARACTER_LENGTH (email) as "Длина почты", last_update as "Крайнее обновление"
from customer;



--ЗАДАНИЕ №6
--Выведите одним запросом только активных покупателей, имена которых KELLY или WILLIE.
--Все буквы в фамилии и имени из верхнего регистра должны быть переведены в нижний регистр.

SELECT first_name, last_name, active  
FROM customer
WHERE first_name IN('KELLY', 'WILLIE') AND(active = 1);



--======== ДОПОЛНИТЕЛЬНАЯ ЧАСТЬ ==============

--ЗАДАНИЕ №1
--Выведите одним запросом информацию о фильмах, у которых рейтинг "R" 
--и стоимость аренды указана от 0.00 до 3.00 включительно, 
--а также фильмы c рейтингом "PG-13" и стоимостью аренды больше или равной 4.00.

SELECT film_id, title, description, rating, rental_rate 
FROM film
where (rating = 'R' and rental_rate between 0.00 and 3.00) 
or (rating = 'PG-13' and rental_rate >= 4.0)
order by rental_rate;



--ЗАДАНИЕ №2
--Получите информацию о трёх фильмах с самым длинным описанием фильма.

SELECT film_id, title, 
		description, 
		CHARACTER_LENGTH(description) as Длина_описания
FROM film
ORDER BY CHARACTER_LENGTH(description) desc LIMIT 3;



--ЗАДАНИЕ №3
-- Выведите Email каждого покупателя, разделив значение Email на 2 отдельных колонки:
--в первой колонке должно быть значение, указанное до @, 
--во второй колонке должно быть значение, указанное после @.

SELECT customer_id, email, 
LEFT(email, POSITION('@' IN email)-1) as "Адрес_перед_@",
RIGHT(email, POSITION('@' IN email)+1) as "Адрес_после_@"
FROM customer;


--ЗАДАНИЕ №4
--Доработайте запрос из предыдущего задания, скорректируйте значения в новых колонках: 
--первая буква должна быть заглавной, остальные строчными.

SELECT customer_id, email, 
INITCAP(LEFT(email, POSITION('@' IN email)-1)) as "Адрес_перед_@",
INITCAP(RIGHT(email, POSITION('@' IN email)+1)) as "Адрес_после_@"
FROM customer;


